package com.cinema.dao;

import com.cinema.model.Schedule;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

/**
 * 排片数据访问接口
 */
public interface ScheduleDao {
    
    /**
     * 保存排片
     */
    boolean save(Schedule schedule);
    
    /**
     * 根据排片ID查找排片
     */
    Optional<Schedule> findById(String scheduleId);
    
    /**
     * 获取所有排片
     */
    List<Schedule> findAll();
    
    /**
     * 根据电影ID查找排片
     */
    List<Schedule> findByMovieId(String movieId);
    
    /**
     * 根据日期范围查找排片
     */
    List<Schedule> findByDateRange(LocalDateTime startDate, LocalDateTime endDate);
    
    /**
     * 根据放映厅查找排片
     */
    List<Schedule> findByCinemaHall(String cinemaHall);
    
    /**
     * 更新排片信息
     */
    boolean update(Schedule schedule);
    
    /**
     * 删除排片
     */
    boolean deleteById(String scheduleId);
    
    /**
     * 检查排片ID是否存在
     */
    boolean existsById(String scheduleId);
    
    /**
     * 检查时间冲突
     */
    boolean hasTimeConflict(String cinemaHall, LocalDateTime showTime, int duration);
}